export default {
  props: {
    //
    isLink: { type: Boolean, default: false },
    to: { type: [String, Object], default: undefined },
    data: {
      type: Object,
      default: () => {
        return {}
      }
    },
    config: {
      type: Object,
      default: () => {
        return {}
      }
    }
  },

  data() {
    return {}
  },
  computed: {
    //
  },
  async created() {
    //
  },

  methods: {
    //
    onClick(val) {
      //
      console.log('ListCell, onClick, ', val, this.data, this.config)
      this.$emit('myclick', this.data)
    },

    _get_ref_propForList(config) {
      //
      const refModel = config.Model.env(config.relation)
      const refMetadata = refModel.metadata || {}
      const ref_propForList = refMetadata.propForList || {}
      return ref_propForList
    },

    getTitle(val, config) {
      // console.log('getTitle, ', val, config)
      const ref_propForList = this._get_ref_propForList(config)
      const propForList = config.propForList || {}
      if (propForList.title) {
        return propForList.title(val)
      } else if (ref_propForList.title) {
        return ref_propForList.title(val)
      } else {
        return val.display_name
      }
    },

    getLabel(val, config) {
      // console.log('getLabel, ', val, config)

      const ref_propForList = this._get_ref_propForList(config)
      const propForList = config.propForList || {}
      if (propForList.label) {
        return propForList.label(val)
      } else if (ref_propForList.label) {
        return ref_propForList.label(val)
      } else {
        return ''
      }
    },
    getValue(val, config) {
      // console.log('getValue, ', val, config)
      const ref_propForList = this._get_ref_propForList(config)
      const propForList = config.propForList || {}
      if (propForList.value) {
        return propForList.value(val)
      } else if (ref_propForList.value) {
        return ref_propForList.value(val)
      } else {
        return ''
      }
    },

    getIcon(val, config) {
      const ref_propForList = this._get_ref_propForList(config)
      const propForList = config.propForList || {}
      if (propForList.icon) {
        return propForList.icon(val)
      } else if (ref_propForList.icon) {
        return ref_propForList.icon(val)
      } else {
        return ''
      }
    }
  }
}
